/*
*********************************************************************************************************
*
*    模块名称 : USB接口模块
*    文件名称 : usb_if.c
*    版    本 : V1.0
*    说    明 : 这是USB和应用程序之间的接口模块. 将teeny_usb协议栈或ST协议栈重新封装。
*               teeny_usb协议栈由网友逝去的风移植。
*    修改记录 :
*        版本号  日期         作者       说明
*        V1.0    2019-11-14   armfluy    正式发布。 逝去的风完成teeny_usb移植工作。
*
*    Copyright (C), 2019-2030, 安富莱电子 www.armfly.com
*
*********************************************************************************************************
*/
#include "bsp.h"
#include "usb_if.h"
#include "modbus_slave.h"

uint8_t g_ModbusRxBuf[RX_BUF_SIZE];	
uint16_t g_ModbusRxLen = 0;

/*
*********************************************************************************************************
*    函 数 名: usbd_Init
*    功能说明: 初始化USB协议栈
*    形    参: 无
*    返 回 值: 无
*********************************************************************************************************
*/
void usbd_Init(void)
{
    tusb_init();
}
/*
*********************************************************************************************************
*	函 数 名: usbd_OpenCDC
*	功能说明: 打开USB
*	形    参: _com : 1, 4
*	返 回 值: 无
*********************************************************************************************************
*/
void usbd_OpenCDC(uint8_t _com)
{

}

/*
*********************************************************************************************************
*	函 数 名: usbd_CloseCDC
*	功能说明: 关闭USB
*	形    参: 无
*	返 回 值: 无
*********************************************************************************************************
*/
void usbd_CloseCDC(void)
{

}

/*
*********************************************************************************************************
*    函 数 名: usbd_OpenMassStorage
*    功能说明: 打开USB
*    形    参: 无
*    返 回 值: 无
*********************************************************************************************************
*/
void usbd_OpenMassStorage(void)
{

}

/*
*********************************************************************************************************
*    函 数 名: usbd_CloseMassStorage
*    功能说明: 关闭USB
*    形    参: 无
*    返 回 值: 无
*********************************************************************************************************
*/
void usbd_CloseMassStorage(void)
{

}

/*
*********************************************************************************************************
*    函 数 名: usbd_RxHostModbus
*    功能说明: 
*    形    参: 无
*    返 回 值: 无
*********************************************************************************************************
*/
extern void cdc_device_send1(const void *data, uint16_t len);
void usbd_RxHostModbus(const void *data, uint16_t len)
{   
    if (g_ModbusRxLen + len <= RX_BUF_SIZE)
    {
        memcpy(&g_ModbusRxBuf[g_ModbusRxLen], data, len);
        g_ModbusRxLen += len;
    }
    
    /* 判断长度不是太好的方案. 如果大于512字节 */
    if (len != 512)
    {		
        MODS_Poll(g_ModbusRxBuf, g_ModbusRxLen);
        g_ModbusRxLen = 0;
        
        if (g_tModS.TxCount > 0)
        {            
            //USBCom_SendBufNow(0, g_tModS.TxBuf, g_tModS.TxCount);       
			//memset(g_tModS.TxBuf, 0x55, g_tModS.TxCount);
            
            cdc_device_send1(g_tModS.TxBuf, g_tModS.TxCount);
        }
    }	
}



/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/
